#ifndef _VN_COMPONENT_VISITOR_H_
#define _VN_COMPONENT_VISITOR_H_

#include "..\Math\Vector2.h"

class KillCounter;
class PlayerHealthComponent;
class PhysicsComponent;
class ComponentVisitor
{
public:
	ComponentVisitor(void);
	virtual ~ComponentVisitor(void);

	void visitPhysicsComponent(PhysicsComponent* p_physicsComponent);
	void visitPlayerHealthComponent(PlayerHealthComponent* p_playerHealthComponent);
	void visitKillCounter(KillCounter* p_killCounter);

	int getHealth() const { return m_health; }
	int getKillCount() const { return m_kill_count; }
	const vn::Vector2& getPosition() const { return m_position; }

protected:
	vn::Vector2 m_position;
	int m_health;
	int m_kill_count;
};

#endif // _VN_COMPONENT_VISITOR_H_